<%#
 Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
 Licensed to the public under the Apache License 2.0.
-%>

<% export("uci_changelog", function(changes) -%>
<fieldset class="cbi-section">
	<strong><%:Legend:%></strong>
	<div class="uci-change-legend">
		<div class="uci-change-legend-label"><ins>&#160;</ins> <%:Section added%></div>
		<div class="uci-change-legend-label"><del>&#160;</del> <%:Section removed%></div>
		<div class="uci-change-legend-label"><var><ins>&#160;</ins></var> <%:Option changed%></div>
		<div class="uci-change-legend-label"><var><del>&#160;</del></var> <%:Option removed%></div>
		<br style="clear:both" />
	</div>
	<br />

	<div class="uci-change-list"><%
		local util = luci.util
		local ret  = { }

		for r, tbl in pairs(changes) do
			for s, os in pairs(tbl) do
				-- section add
				if os['.type'] and os['.type'] ~= "" then
					ret[#ret+1] = "<ins>%s.%s=<strong>%s</strong>" %{ r, s, os['.type'] }
					for o, v in util.kspairs(os) do
						if o:sub(1,1) ~= "." then
							if type(v) == "table" then
								local i
								for i = 1, #v do
									ret[#ret+1] = "<br />%s.%s.%s+=<strong>%s</strong>"
										%{ r, s, o, util.pcdata(v[i]) }
								end
							else
								ret[#ret+1] = "<br />%s.%s.%s=<strong>%s</strong>"
									%{ r, s, o, util.pcdata(v) }
							end
						end
					end
					ret[#ret+1] = "</ins><br />"

				-- section delete
				elseif os['.type'] and os['.type'] == "" then
					ret[#ret+1] = "<del>%s.<strong>%s</strong></del><br />" %{ r, s }

				-- modifications
				else
					ret[#ret+1] = "<var>%s.%s<br />" %{ r, s }
					for o, v in util.kspairs(os) do
						if o:sub(1,1) ~= "." then
							if v and #v > 0 then
								ret[#ret+1] = "<ins>"
								if type(v) == "table" then
									local i
									for i = 1, #v do
										ret[#ret+1] = "%s.%s.%s+=<strong>%s</strong><br />"
											%{ r, s, o, util.pcdata(v[i]) }
									end
									
								else
									ret[#ret+1] = "%s.%s.%s=<strong>%s</strong><br />"
										%{ r, s, o, util.pcdata(v) }
								end
								ret[#ret+1] = "</ins>"
							else
								ret[#ret+1] = "<del>%s.%s.<strong>%s</strong><br /></del>" %{ r, s, o }
							end
						end
					end
					ret[#ret+1] = "</var><br />"
				end
			end
		end

		write(table.concat(ret))
	%></div>
</fieldset>
<%- end) %>
